﻿using System.Collections.Generic;

namespace MyVocabulary.App_Code
{
    public class VocabularyVerb
    {
        /// <summary>
        /// The persons used for all verbs in all conjugations
        /// </summary>
        public List<Person> Persons { get; set; }

        /// <summary>
        /// The list of verbs in the current verbs file
        /// </summary>
        public List<Verb> Verbs { get; set; }
    }

    public class Person
    {
        public string Text { get; set; }
        public string Translation { get; set; }
    }

    public class Verb
    {
        public string InfinitiveForm { get; set; }
        public string Translation { get; set; }        
        public string Examples { get; set; }
        public string Remarks { get; set; }
        public List<VerbConjugation> Conjugations { get; set; }
    }

    public class VerbConjugation
    {
        public string Tense { get; set; }
        public string Examples { get; set; }
        public string Remarks { get; set; }

        /// <summary>
        /// Key: the person
        /// Value: the conjugation at the key person
        /// </summary>
        public List<KeyValuePair<string, string>> Conjugation { get; set; }
    }

    /// <summary>
    /// Special class used only when testing the verbs.
    /// This class is used to denormalize the verb's translation, explanation and remarks for each conjugaion.
    /// </summary>
    public class TestVerbAndConjugation
    {
        /// <summary>
        /// The Id is used for identifying the initial verb for each conjugation
        /// </summary>
        public int Id { get; set; }

        public string InfinitiveForm { get; set; }
        public string Translation { get; set; }
        public string Examples { get; set; }
        public string Remarks { get; set; }
        public VerbConjugation Conjugation { get; set; }
    }

    public static class VocabularyVerbConst
    {       
        public const string Persons = "Persons";
        public const string Person = "Person";
        public const string PersonText = "PersonText";
        public const string PersonTranslation = "PersonTranslation";
        
        public const string Verbs = "Verbs";
        public const string Verb = "Verb";
        public const string InfinitiveForm = "InfinitiveForm";
        public const string Translation = "Translation";
        public const string Examples = "Examples";
        public const string Remarks = "Remarks";
        public const string Conjugations = "Conjugations";

        public const string VerbConjugation = "VerbConjugation";
        public const string Tense = "Tense";
        public const string VerbConjugationExamples = "VerbConjugationExamples";
        public const string VerbConjugationRemarks = "VerbConjugationRemarks";
        public const string Conjugation = "Conjugation";
        public const string ConjugationItem = "ConjugationItem";
        public const string ConjugationKey = "ConjugationKey";
        public const string ConjugationValue = "ConjugationValue";
    }
}
